package com.briup;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import org.junit.Test;

/**
 * @program: jdbc-demo
 * @description: 采集测试类
 * @author: rendc
 * @create: 2025-09-03 11:14
 **/
public class GatherTest {

  @Test
  public void gather() throws Exception {
    // 准备文件
    // String filePath = "src/main/resources/data-file-simple";
    String filePath = "src/main/resources/data-file";
    // File file = new File(filePath);
    // 准备io流 读取文件内容
    BufferedReader br = new BufferedReader(new FileReader(filePath));
    // 逐行读取
    String str = null;
    while ((str = br.readLine()) != null) {
      // System.out.println(str);
      // 按字段拆分 | 提取有效信息
      String[] arr = str.split("[|]");
      // 区分传感器类型
      switch (arr[3]) {
        case "16":
          // System.out.println("温湿度");
          // 数据换算
          // 表示温度和湿度数据。当数据为温度和湿度时，环境数据arr[6]（例:5d806ff802）的前两个字节表示温度(即前4位数,例:5d80)中间的两个字节表示湿度(即中间的4位数，例:6ff8)
          String temperature = arr[6].substring(0, 4);
          // System.out.println(temperature);
          // 转化为实际数据
          // 实际温度(data*(0.00268127F))-46.85F
          int temperatureInt = Integer.parseInt(temperature, 16);
          // 最终温度
          System.out.print("实际温度：");
          System.out.println((temperatureInt * (0.00268127F)) - 46.85F);
          String humidity = arr[6].substring(4, 8);
          int humidityInt = Integer.parseInt(humidity, 16);
          // System.out.println(humidity);
          System.out.print("实际湿度：");
          System.out.println((temperatureInt * 0.00190735F) - 6);
          break;
        case "256":
          System.out.print("光照强度：");
          // 数据换算
          System.out.println(Integer.parseInt(arr[6].substring(0, 4), 16));
          break;
        case "1280":
          System.out.print("二氧化碳浓度：");
          // 数据换算
          System.out.println(Integer.parseInt(arr[6].substring(0, 4), 16));
          break;
        default:
          System.out.println("数据格式有误，请排查是否是新设备：\n" + str);
          break;
      }
    }
  }
}
